# @Time    :2025/4/1 11:56
"""
题目 2：图形绘制系统
构建一个图形绘制系统，体现面向对象编程的核心概念。
创建Shape基类：
包含私有属性__color（图形颜色）。
提供公有方法get_color用于获取图形颜色。
提供公有方法draw（空实现），用于绘制图形的行为。
创建Circle类继承自Shape类：
新增私有属性__radius（圆的半径）。
重写draw方法，打印 “绘制半径为 {radius}，颜色为 {color} 的圆”。

创建Rectangle类继承自Shape类：
新增私有属性__width（矩形宽度）和__height（矩形高度）。
重写draw方法，打印 “绘制宽度为 {width}，高度为 {height}，颜色为 {color} 的矩形”。
创建DrawingBoard类：
包含私有属性__shapes，用于存储所有图形对象的列表。
提供公有方法add_shape，用于向列表中添加图形对象。
提供公有方法draw_all_shapes，遍历__shapes列表，调用每个图形的draw方法。
"""


class Shape:
    def __init__(self, color):
        self.__color = color

    def get_color(self):  # 用于获取图形颜色
        return self.__color

    def draw(self):  # 用于绘制图形的行为
        pass


class Circle(Shape):
    def __init__(self, color, radius):
        super().__init__(color)
        self.__radius = radius

    def draw(self):  # 用于绘制图形的行为

        color = self.get_color()
        print(f"绘制半径为 {self.__radius}，颜色为{color} 的圆")


class Rectangle(Shape):  # 矩形
    def __init__(self, color, width, height):
        super().__init__(color)
        self.__width = width
        self.__height = height

    def draw(self):
        color = self.get_color()
        # 用于绘制图形的行为
        print(f"绘制宽度为 {self.__width}，高度为 {self.__height}，颜色为 {color}的矩形")


"""
包含私有属性__shapes，用于存储所有图形对象的列表。
提供公有方法add_shape，用于向列表中添加图形对象。
提供公有方法draw_all_shapes，遍历__shapes列表，调用每个图形的draw方法。
"""


class DrawingBoard:  # 绘画板
    def __init__(self):
        self.__shapes = []

    def add_shape(self, graph):
        self.__shapes.append(graph)

    def draw_all_shapes(self):
        for graph in self.__shapes:
            # if isinstance(graph, Circle):
            #     graph.draw()
            # elif isinstance(graph, Rectangle):
            graph.draw()


d1 = DrawingBoard()
c1 = Circle("黄色", 12)
r1 = Rectangle("绿色", 10, 9)

d1.add_shape(c1)
d1.add_shape(r1)

d1.draw_all_shapes()
